package com.rocketmq;


import org.apache.rocketmq.client.producer.DefaultMQProducer;
import org.apache.rocketmq.client.producer.SendResult;
import org.apache.rocketmq.common.message.Message;
import org.junit.Test;

import java.nio.charset.StandardCharsets;
import java.nio.file.attribute.UserPrincipal;

/**
 * 模拟消息发送的生产者 组织一个消息发送给rocketmq
 */
public class MyProducer {
    @Test
    public void send() throws Exception {
    //1 创建一个生产者对象 连接nameserver localhost:9876
        //创建一个生产者对象
        DefaultMQProducer producer=new DefaultMQProducer();
        //给生产者提供必要属性 nameserver地址
        producer.setNamesrvAddr("localhost:9876");
        //指定生产者分组
        producer.setProducerGroup("group01");
        //建立连接
        producer.start();
        //有的个人电脑 未知原因 建立连接比较迟钝 最终总是提示连接超时 timeout
        //Thread.sleep(500);
    //2 组织一个消息对象
        //创建一个消息对象
        Message message=new Message();
        //准备一个消息文本
        String msg="first message";
        message.setKeys("orderSn");
        message.setTags("上海");
        message.setBody(msg.getBytes(StandardCharsets.UTF_8));
        //指定主题 我们应该先在rocketmq中主题创建,在发送消息.
        message.setTopic("topic01");
    //3 发送消息,接收rocketmq反馈信息
        SendResult send = producer.send(message);
        System.out.println("消息发送结果:" + send.getSendStatus());
        System.out.println("队列信息:"+send.getMessageQueue());
        //关闭producer
        producer.shutdown();
    }
}
